package com.pingan.haofang.searchcloud.metadata.service;

import com.pingan.haofang.searchcloud.index.domain.Index;
import com.pingan.haofang.searchcloud.metadata.domain.Metadata;
import com.pingan.haofang.searchcloud.metadata.dto.MetadataFieldsGenerateDTO;
import com.pingan.haofang.searchcloud.metadata.dto.MetadataFieldQueryResult;
import com.pingan.haofang.searchcloud.metadata.dto.MetadataFieldTypeQueryResult;

import java.util.List;

/**
 * 索引字段类型Service
 *
 * @author baojie371
 * @date 17/5/3
 * @since 1.0.0
 */
public interface MetadataService {

    /**
     * 查询所有字段类型
     *
     * @return
     */
    List<MetadataFieldTypeQueryResult> findAllTypes();

    /**
     * 字段自动生成
     *
     * @param fieldsGenerateDTO
     * @return
     */
    List<MetadataFieldQueryResult> generateFields(MetadataFieldsGenerateDTO fieldsGenerateDTO);

    /**
     * 清理Solr里旧的Config，仅保留存在的Collection对应的Config
     *
     * @param indexId
     * @param engineType
     * @param topN
     * @return
     */
    List<Long> clearOldConfigOfStorage(long indexId, int engineType, int topN);

    /**
     * 清理DB里旧的Collections，删除days天前，并且没有启用的collection
     *
     * @param metadataIds
     * @return
     */
    void clearOldConfigOfDb(List<Long> metadataIds);


    /**
     * 根据solr中configName查询数据库metadata
     *
     * @param
     * @return
     */
    Metadata getMetadataNameAndVersionFromConfigName(String configName);


    /**
     * 查询config对应的index(数据库存在)
     *
     * @param name
     * @return
     */
    public Index getIndexNameFromMetadata(String name);
}
